This invention relates generally to optical code reading devices and more specifically to a programmable recognition device employed in conjunction with bar code scanning circuits that allow the transition points between bars and spaces to be identified.
In bar code reading equipment it is essential to accurately identify those areas that are presented as optical elements (bars and spaces) as the bar code symbol is scanned or read. This is particularly true in the case of commonly used codes, both linear and stacked linear, where information is not only found in the presence of bars and spaces, but also in their relative width dimension. Bar code recognition circuitry conventionally converts an analog signal that is generated by a photodetector to a bit serial binary representation of the bar-space pattern. Conventionally this process of determining the transition points is performed by the digitizer.
In practice, detecting the location of a transition point is often complicated by noise. Such noise can arise from diverse sources such as varying ambient light, physical impediments to the path of light to and from the bar code symbol such as dirt, defocusing, fading or irregularities in the print, microphonics within the scanner, and optical scattering caused by the well known diffusion and laminate effects. Other sources of noise and error are known in the bar code reading art.
Conventionally a time sampled scanning bar code scanner (reader) performs a relatively sparse temporal sampling of a bar code symbol being scanned, while a CCD bar code scanner performs, analogously, a relatively sparse spatial sampling of a bar code symbol being scanned. The information density realized by a scan is a function of the modulation transfer function of the optical system, the physical size of the symbol and, depending upon the type of device, the scanning rate or the granularity of the photodetectors. The temporal or spatial samples are presented to signal processing circuitry as a sequence of amplitude levels having maxima and minima. Bar-space and space-bar transitions are represented by relatively fast amplitude transitions. Typically the transition point is defined as being intermediate the maxima and minima which are indicative of light and dark areas on the bar code symbol. It will be evident that a transition point generally will not occur precisely at a sampled point, but will lie between samples. Failure to take this fact into account can result in significant inaccuracy in determining the transition point, in determining the relative width of the space or bar, and in the interpretation of the bar code symbol. These problems, are further exacerbated by the aforementioned noise factors.
In practical microprocessor based bar code equipment, memory, specifically random access memory, RAM, is at a premium. Although it is in principle possible to store the entire series of digital words representing the sampled analog signal levels, this would require unnecessarily large amounts of costly RAM. For this reason it is highly desirable to have implementations which require the smallest possible amount of RAM.
In U.S. Pat. No. 3,909,594 to Allais et al., there is shown a circuit that establishes a variable reference voltage, allowing the reader to compensate for variations in the amplitude of the photodetector signal caused by noise. The reference voltage is utilized by a comparator to identify the presence of a bar or a space.
In the disclosure of U.S. Pat. No. 4,335,301, to Palmer et al, two positive and negative peak detecting circuits define a varying reference voltage having a value that is intermediate to positive and negative peak voltages and can be used to identify a transition between bars and spaces. This circuit is able to compensate for reflectance variations among successive bars or spaces.
U.S. Pat. No. 4,833,309 to Yomogida discloses a peak hold circuit for converting an analog signal from a bar code detector into a digital signal. Reference signals corresponding to peaks are compared with an incoming signal in order to determine a transition. Compensating adjustments in the levels of the reference signals can be effected, tending to reduce the influence of noise on detection of transitions between bars and spaces.
While the above circuits are useful in defining the signal level that indicates a space-bar or bar-space transition, they do not address the problem of accurately locating the point in time or position at which a sparsely sampled analog signal crosses the defined level. It is not only possible to correct this deficiency in hardware, but it is also possible to implement this correction in a programmable, microprocessor based signal digitizer.